package com.itheima.dao;

import com.itheima.pojo.Menu;

import java.util.List;
import java.util.Map;

/**
 * @author wuzhouwei
 * @date 2020/4/16
 */
public interface MenuDao {

    /**
     * 查询父菜单列表
     */
    List<Menu> queryParentMenu(String username);

    /**
     * 查询子菜单列表
     * @param map
     * @return
     */
    List<Menu> queryChildrenMenu(Map map);

    /**
     * 查询所有菜单
     *
     * @return
     */
    List<Menu> findAll();

    /**
     * 根据条件查询所有菜单
     *
     * @param queryString
     * @return
     */
    List<Menu> findByCondition(String queryString);

    /**
     * 根据菜单id查询菜单信息
     *
     * @param id
     * @return
     */
    Menu findByMenuId(Integer id);

    /**
     * 根据菜单名和id, 查看是否有已存在的
     *
     * @param menu
     * @return
     */
    int findMenuCountByNameAndId(Menu menu);

    /**
     * 根据菜单链接地址和id, 查看是否有已存在的
     *
     * @param menu
     * @return
     */
    int findMenuCountByLinkUrlAndId(Menu menu);

    /**
     * 根据菜单的排列位置和id, 看是否有已存在的
     *
     * @param menu
     * @return
     */
    int findMenuCountByPathAndId(Menu menu);

    /**
     * 编辑菜单
     *
     * @param menu
     */
    void editMenu(Menu menu);

    /**
     * 根据菜单id,查看是否有关联角色
     *
     * @param id
     * @return
     */
    int findRoleCountById(Integer id);

    /**
     * 根据菜单id, 删除菜单
     *
     * @param id
     */
    void delete(Integer id);

    /**
     * 查询该菜单名, 是否有存在的菜单
     *
     * @param name
     * @return
     */
    int findMenuCountByName(String name);

    /**
     * 根据菜单链接查询, 是否有存在的菜单
     *
     * @param linkUrl
     * @return
     */
    int findMenuCountByLinkUrl(String linkUrl);

    /**
     * 根据菜单排列位置, 是否有存在的菜单
     *
     * @param path
     * @return
     */
    int findMenuCountByPath(String path);

    /**
     * 添加菜单
     *
     * @param menu
     */
    void addMenu(Menu menu);


    /**
     * 查找所有父菜单和对应id
     *
     * @return
     */
    List<Map> findParentNameAndId();

    /**
     * 根据父菜单id,查询父菜单名
     *
     * @param parentMenuId
     * @return
     */
    String findParentNameByParentMenuId(Integer parentMenuId);

    int findSubMenuCountById(Integer id);
}
